# coding:utf-8
from __future__ import annotations

from typing import Dict, List, Optional, Union

from pydantic import BaseModel


# noinspection PyPep8Naming, PyShadowingNames
class SimpleReq(BaseModel):
    ...


# noinspection PyPep8Naming, PyShadowingNames
class OperateRsp(BaseModel):
    prompts: Optional[str]
    status_code: Optional[int]
    message: Optional[str]
    data: Optional[bool]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class SessionData(BaseModel):
    session_key: Optional[str]
    user_id: Optional[int]
    app_id: Optional[int]
    deadLine: Optional[int]
    deadLine_str: Optional[str]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class AddSessionReq(BaseModel):
    user_id: Optional[int]
    app_id: Optional[int]
    did: Optional[int]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class GetUserByMobileReq(BaseModel):
    mobile_list: Optional[List[str]]
    app_id: Optional[int]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class MGetUserIdsByMobilesRsp(BaseModel):
    status_code: Optional[int]
    message: Optional[str]
    data: Optional[Union[Dict[str, int], str]]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class MobileCreateRes(BaseModel):
    virtualMobileMax: Optional[int]
    virtualMobileMin: Optional[int]
    code: Optional[str]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class MobileCreateAccountReq(BaseModel):
    count: Optional[int]
    app_id: Optional[int]
    mobile_owner: Optional[str]
    storeCountry: Optional[str]
    isNeedSync: Optional[bool]
    did: Optional[str]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class AddAccountAndGetSessionReq(BaseModel):
    uid_list: Optional[List[int]]
    app_id: Optional[int]
    scene: Optional[str]
    is_need_session: Optional[str]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class AccountData(BaseModel):
    session_key: Optional[str]
    user_id: Optional[int]
    device_id: Optional[int]
    app_id: Optional[int]
    user_name: Optional[str]
    batch_id: Optional[int]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class DataInfoReq(BaseModel):
    ...


# noinspection PyPep8Naming, PyShadowingNames
class AttriButes(BaseModel):
    attributes_key: Optional[str]
    attributes_value: Optional[str]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class AccountBaseInfo(BaseModel):
    UserId: Optional[int]
    ScreenName: Optional[str]
    AvatarUrl: Optional[str]
    Description: Optional[str]
    Gender: Optional[int]
    Email: Optional[str]
    LoginName: Optional[str]
    Mobile: Optional[str]
    MobileId: Optional[int]
    HasPassword: Optional[bool]
    CreateTime: Optional[int]
    UserType: Optional[int]
    DeviceId: Optional[int]
    AvatarUri: Optional[str]
    password: Optional[str]
    EmailId: Optional[int]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class GetSinglePoolAllInfoReq(BaseModel):
    batch_id: Optional[int]
    scene: Optional[str]
    app_id: Optional[int]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class DeleteAccountDataReq(BaseModel):
    user_id: Optional[int]
    app_id: Optional[int]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class CreteAccountReq(BaseModel):
    count: Optional[int]
    app_id: Optional[int]
    scene: Optional[str]
    is_need_session: Optional[str]
    did: Optional[str]
    storeCountry: Optional[str]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class GetAccountDataReq(BaseModel):
    user_id: Optional[int]
    app_id: Optional[int]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class AccountBase(BaseModel):
    user_id: Optional[int]
    app_id: Optional[int]
    name: Optional[str]
    screen_name: Optional[str]
    avatar_url: Optional[str]
    avatar_uri: Optional[str]
    gender: Optional[int]
    mobile: Optional[str]
    mobile_id: Optional[int]
    email: Optional[str]
    device_id: Optional[int]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class GetAddSessionRsp(BaseModel):
    status_code: Optional[int]
    message: Optional[str]
    data: Optional[SessionData]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class CreateMobile(BaseModel):
    status_code: Optional[int]
    message: Optional[str]
    data: Optional[MobileCreateRes]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class AddAccountAndGetSessionRsp(BaseModel):
    status_code: Optional[int]
    message: Optional[str]
    data: Optional[List[AccountData]]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class CreteAccountRsp(BaseModel):
    status_code: Optional[int]
    message: Optional[str]
    data: Optional[List[AccountData]]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class AccountDatasV1(BaseModel):
    user_name: Optional[str]
    user_id: Optional[int]
    session_key: Optional[str]
    accountBaseInfo: Optional[AccountBaseInfo]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class AccountBaseInfoResp(BaseModel):
    status_code: Optional[int]
    message: Optional[str]
    data: Optional[AccountBaseInfo]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class DeleteAccountDataRsp(BaseModel):
    prompts: Optional[str]
    status_code: Optional[int]
    message: Optional[str]
    data: Optional[DeleteAccountDataReq]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class DataPoolInfo(BaseModel):
    batch_id: Optional[int]
    scene: Optional[str]
    app_id: Optional[int]
    data_size: Optional[int]
    attributes: Optional[List[AttriButes]]
    account_data: Optional[List[AccountDatasV1]]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class DataInfo(BaseModel):
    owner: Optional[str]
    pool_size: Optional[int]
    data_pool: Optional[List[DataPoolInfo]]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class GetSinglePoolAllInfoRsp(BaseModel):
    status_code: Optional[int]
    message: Optional[str]
    data: Optional[List[DataPoolInfo]]
    ...


# noinspection PyPep8Naming, PyShadowingNames
class DataInfoRsp(BaseModel):
    status_code: Optional[int]
    message: Optional[str]
    data: Optional[List[DataInfo]]
    ...
